/*
 ***************************************************************************
 * 建立日期	： 2014-04-15
 * 版权声明	： 本代码版权归圣笛科技所有，禁止任何未授权的传播和使用
 * 作者		： yanjiaming@sainti.com
 * 模块		：
 * 描述		： baseModel
 * -------------------------------------------------------------------------
 * 修改历史
 * 序号			日期					修改人				修改原因
 * <#序号#>        <#日期#>                <#修改人#>              <#修改原因#>
 *
 ***************************************************************************
 */

#import "BaseModel.h"
#import <objc/runtime.h>

@implementation BaseModel

-(id)initWithDic:(NSDictionary *)data{
    self=[super init];
    if (self) {
        
    }
    return self;
}

- (NSData*)keyedArchiverObject
{
    return [NSKeyedArchiver archivedDataWithRootObject:self];
}

+ (instancetype)unarchiveObjectWithDate:(NSData*)data
{
    return [NSKeyedUnarchiver unarchiveObjectWithData:data];
}

- (void)encodeWithCoder:(NSCoder *)aCoder
{
    unsigned int count = 0;
    Ivar *vars =  class_copyIvarList([self class], &count);
    for (int index =0; index < count; index++) {
        Ivar varTemp = vars[index];
        const char* c = ivar_getName(varTemp);
        NSString *keyName = [NSString stringWithUTF8String:c];
        if ([self valueForKey:keyName]) {
            [aCoder encodeObject:[self valueForKey:keyName] forKey:keyName];
        }
    }
    free(vars);
}

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super init];
    if (self)
    {
        unsigned int count = 0;
        Ivar *vars =  class_copyIvarList([self class], &count);
        for (int index =0; index < count; index++) {
            Ivar varTemp = vars[index];
            const char* c = ivar_getName(varTemp);
            NSString *keyName = [NSString stringWithUTF8String:c];
            [self setValue:[aDecoder decodeObjectForKey:keyName] forKey:keyName];
        }
        free(vars);
    }
    return self;
}

@end
